package br.com.threads;

/**
 * Objetivo deste codigo: Demonstrar o metodo nao estatico join()
 * 
 * @author Sidney
 * 
 */
class Contador extends Thread {
	private int qtde = 0;
	public void setQtde(int value) {
		this.qtde = value;
		if (this.qtde == 0)
			this.qtde = 10;
	}
	public void run() {
		for (int i = 0; i <= 100; i++) {
			if (i % qtde == 0) {
				System.out.print(Thread.currentThread().getName() + "> " + i);
			}
			try {
				sleep(500);//configura esta thread para entrar em estado de suspensao
				//entre as execucoes
			} catch (InterruptedException e) {

			}
		}
	}	
}

public class Programa28 {
	public static void main(String[] args) {		
			Contador c1 = new Contador();
			c1.setQtde(10);
			c1.setName("T001");
			c1.start();
			try {
			c1.join();// metodo informa que a thread main so pode ser executada
			//depois que a thread T001 finalizar, deve sempre estar dentro de um 
			//bloco try/catch
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
			for (int i = 0; i <= 100; i++) {
				if ((i % 5) == 0) {
					System.out.println(Thread.currentThread().getName() + "> " + i);
				}
			}
	}
}
